﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DTOService;
using BUSService;

namespace QuanLyBangDia
{
    public partial class frmThueBangDia : Form
    {
        MyService myService = new MyService();

        int count = 0;

        QuyDinh parr;

        int SoBangDiaKHDangThue = 0;

        public frmThueBangDia()
        {
            InitializeComponent();
            this.Icon = QuanLyBangDia.Properties.Resources.HDD;
            gvKhachHang.Columns.Add("MaKH", "Mã Khách Hàng");
            gvKhachHang.Columns.Add("HoTen", "Họ Tên");
            gvKhachHang.Columns.Add("DiaChi", "Địa Chỉ");
            gvKhachHang.Columns.Add("NgaySinh", "Ngày Sinh");
            gvKhachHang.Columns.Add("Email", "Email");
            gvKhachHang.Columns.Add("DienThoai", "Điện Thoại");
            gvKhachHang.Columns.Add("CMND", "CMND");
            gvKhachHang.Columns.Add("SoTienDatCoc", "Tiền Cọc");

            gvBangDia.Columns.Add("MaBD", "Mã băng đĩa");
            gvBangDia.Columns.Add("TenBD", "Tên băng đĩa");
            //gvBangDia.Columns.Add("LoaiBD", "Loại băng đĩa");
            gvBangDia.Columns.Add("LoaiSanPham", "Loại sản phẩm");
            gvBangDia.Columns.Add("GiaBD", "Giá băng đĩa");
            gvBangDia.Columns.Add("SoLuong", "Số lượng hiện tại");
            //gvBangDia.Columns.Add("TinhTrang", "Trình trạng");
            gvBangDia.Columns.Add("MoTa", "Mô tả");

            gvBangDiaThue.Columns.Add("MaBD", "Mã băng đĩa");
            gvBangDiaThue.Columns.Add("TenBD", "Tên băng đĩa");
            //gvBangDiaThue.Columns.Add("LoaiBD", "Loại băng đĩa");
            gvBangDiaThue.Columns.Add("LoaiSanPham", "Loại sản phẩm");
            gvBangDiaThue.Columns.Add("GiaBD", "Giá băng đĩa");
            gvBangDiaThue.Columns.Add("SoLuong", "Số lượng hiện tại");
            //gvBangDiaThue.Columns.Add("TinhTrang", "Trình trạng");
            gvBangDiaThue.Columns.Add("MoTa", "Mô tả");
            gvBangDiaThue.Columns.Add("PhiChoThue", "Phí cho thuê");
        }

        private void ThueBangDia_Load(object sender, EventArgs e)
        {
            parr = myService.SelectQuyDinh();
        }

        private void linkDKKH_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            frmThemKhachHang frm = new frmThemKhachHang();
            frm.ShowDialog();
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void txtHoTenKH_TextChanged(object sender, EventArgs e)
        {
            gvKhachHang.Rows.Clear();
            KhachHang[] ls = myService.SelectKhachHangTheoTen(txtHoTenKH.Text);
            object[] temp;
            foreach (KhachHang v in ls)
            {
                temp = new object[] { v.MaKH, v.HoTen, v.DiaChi, v.NgaySinh.Split(' ')[0], v.Email, v.DienThoai, v.CMND, v.TienDatCoc };
                gvKhachHang.Rows.Add(temp);
            }
            gvKhachHang.Show();
        }

        private void gvKhachHang_SelectionChanged(object sender, EventArgs e)
        {
            try
            {
                DataGridViewRow currRow = gvKhachHang.CurrentRow;
                txtMaKH.Text = currRow.Cells["MaKH"].Value.ToString();
                txtNgaySinh.Text = currRow.Cells["NgaySinh"].Value.ToString();
                txtSoDT.Text = currRow.Cells["DienThoai"].Value.ToString();
                txtSoTienCoc.Text = currRow.Cells["SoTienDatCoc"].Value.ToString();
                txtHoTen.Text = currRow.Cells["HoTen"].Value.ToString();
                txtDiaChi.Text = currRow.Cells["DiaChi"].Value.ToString();
                txtTienTrongTaiKhoan.Text = currRow.Cells["SoTienDatCoc"].Value.ToString();
                KhachHang parr = new KhachHang();
                parr.MaKH = txtMaKH.Text;
                SoBangDiaKHDangThue = myService.SoBangDiaKhachHangDangThue(parr);
                txtGhiChu.Text = "Số băng đĩa khách hàng đang thuê : " + SoBangDiaKHDangThue;
            }
            catch
            {
            }
        }

        private void txtTenBangDia_TextChanged(object sender, EventArgs e)
        {
            gvBangDia.Rows.Clear();
            BangDia[] ls = myService.SelectBangDia(txtTenBangDia.Text);
            object[] temp;
            foreach (BangDia v in ls)
            {
                temp = new object[] { v.MaBD, v.TenBD, /*v.LoaiBD,*/ v.LoaiSanPham, v.GiaBD, v.SoLuong, /*v.TinhTrang,*/ v.MoTa };
                gvBangDia.Rows.Add(temp);
            }
            gvBangDia.Show();
        }

        private void btnThemBD_Click(object sender, EventArgs e)
        {
            try
            {
                if (count < parr.SoLuongThueToiDa)
                {
                    if (count + SoBangDiaKHDangThue == parr.SoLuongThueToiDa)
                    {
                        MessageBox.Show("Khách hàng đã thuê tối đa " + parr.SoLuongThueToiDa + " băng đĩa !", "Thông báo");
                        return;
                    }
                    DataGridViewRow currRow = gvBangDia.CurrentRow;
                    if (currRow.Cells[0].Value != null)
                    {
                        LoaiSanPham lsp = myService.GetLoaiSanPham(int.Parse(currRow.Cells["LoaiSanPham"].Value.ToString()));
                        txtTongTien.Text = (int.Parse(txtTongTien.Text) + lsp.PhichoThue).ToString();
                        txtTienThanhToan.Text = txtTongTien.Text;
                        object[] temp = new object[] { currRow.Cells["MaBD"].Value, currRow.Cells["TenBD"].Value, currRow.Cells["LoaiSanPham"].Value, currRow.Cells["GiaBD"].Value, currRow.Cells["SoLuong"].Value, currRow.Cells["MoTa"].Value, lsp.PhichoThue };
                        gvBangDiaThue.Rows.Add(temp);
                        gvBangDiaThue.Show();
                        count++;
                    }
                }
                else
                    MessageBox.Show("Đã chọn tối đa " + parr.SoLuongThueToiDa + " băng đĩa !", "Thông báo ");
            }
            catch
            {

            }
        }

        private void btnXoaBD_Click(object sender, EventArgs e)
        {
            try
            {
                if (count >= 0)
                {
                    DataGridViewRow currRow = gvBangDiaThue.CurrentRow;
                    if (currRow.Cells[0].Value != null)
                    {
                        gvBangDiaThue.Rows.Remove(currRow);
                        gvBangDiaThue.Show();
                        count--;
                        txtTongTien.Text = (int.Parse(txtTongTien.Text) - int.Parse(currRow.Cells[6].Value.ToString())).ToString();
                        txtTienThanhToan.Text = txtTongTien.Text;
                    }
                }
            }
            catch
            {
            }
        }

        private void btnThue_Click(object sender, EventArgs e)
        {
            if (gvBangDiaThue.Rows.Count == 1)
            {
                MessageBox.Show("Chưa có băng đĩa thuê !", "Thông báo");
                return;
            }
            if (gvKhachHang.Rows.Count == 1)
            {
                MessageBox.Show("Chưa có khách hàng thuê băng đĩa !", "Thông báo");
                return;
            }
            BangDia_Muon parr = new BangDia_Muon();
            string status = "";
            int count = 0;
            foreach (DataGridViewRow currRow in gvBangDiaThue.Rows)
            {
                if (count < gvBangDiaThue.Rows.Count - 1)
                {
                    parr.MaBD = currRow.Cells[0].Value.ToString();
                    parr.MaKH = txtMaKH.Text;
                    parr.TienThue = float.Parse(currRow.Cells[6].Value.ToString());
                    status = myService.ChoThueBangDia(parr);
                    count++;
                }
            }
            if (status == "SUCCESS")
            {
                MessageBox.Show("Đã hoàn tất cho thuê !", "Thông báo");
                gvBangDiaThue.Rows.Clear();
            }
            else
                MessageBox.Show("Cho thuê thất bại !", "Thông báo");
        }

    }
}
